%READCST 功能描述 逐步替代readsweep文件 在CST扫参后，从CST导出的逐个txt文档中读取文件的前两列，并在第三列添加上当前参数的当前值 （配合分割函数使用split）
%@since: 2022-06-18 19:54:20
%@update: 输入更新内容
%@type:function
%    *参数说明*
%       @param [filename] 字符串，合成的文件路径，包含文件名，不包含后缀
%       @param [StartLine] 从哪一行开始读取，不指定则从第四行开始
%       @param [NumVariables] 变量个数（列数），不指定则2列
%       @param [AddNewCol] 是否添加新的一列
%       @param [ColValues] 新列的值
%       @return [thedata] 返回的矩阵
%    *使用说明*
%       [THETA] = READCST([参数名])
%
% * 注意事项:
% 1 文件用非legacy格式导出最好，不用改参数
% 2 在CST的结果teemplete results中定义计算吸收或其它变量的值，这样不用再进行数据处理
% 3
% ———————————————— POWERED BY YINWEI ————————————————

%%
function thedata = readCST(filename, StartLine, NumVariables, AddNewCol, ColValues)
    % 设置起始行
    if exist('StartLine', 'var')
        dataLines = [StartLine, Inf];
    else
        dataLines = [4, Inf];
    end

    % 指定变量的列数
    if exist('NumVariables', 'var')
        opts = delimitedTextImportOptions("NumVariables", NumVariables);
        Names = ["X", "Y"];
        opts.VariableNames = repelem(Names, [1 NumVariables - 1]);
        Types = ["double", "double"];
        opts.VariableTypes = repelem(Types, [1, NumVariables - 1]);
    else
        opts = delimitedTextImportOptions("NumVariables", 2);
        % 指定列名称和类型
        opts.VariableNames = ["X", "Y"];
        opts.VariableTypes = ["double", "double"];
    end

    % 指定范围和分隔符
    opts.DataLines = dataLines;
    opts.Delimiter = "\t"; %\t

    % % 指定列名称和类型
    % opts.VariableNames = ["Fre_x", "Value_z", "Value_z", "Value_z"];
    % opts.VariableTypes = ["double", "double", "double", "double"];

    % 指定文件级属性
    opts.ExtraColumnsRule = "ignore";
    opts.EmptyLineRule = "skip";
    opts.ConsecutiveDelimitersRule = "join";
    opts.LeadingDelimitersRule = "ignore";

    % 导入数据
    thedata = readtable(filename, opts);
    thedata = table2array(thedata);

    if exist('AddNewCol', 'var') %如果存在“添加第三列”的开关

        if AddNewCol % 并且开关为开
            disp("添加第三列数据");
            newvalue = ColValues;
            thedata = [thedata, ones(size(thedata, 1), 1) * newvalue]; % 在最右边添加一列，值为当前的文件名
        end

    end

end
